iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
AI & Data

然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)系列 第 22

[Day 22] 驗證資料 — 不可以色色! 加裝資料界的色情守門員

  • 分享至 

  • xImage
  •  

I used to be an adventurer like you, then I took an arrow in the knee. — Lots of NPC guards (The Elder Scrolls V: Skyrim)

前言

在前面的文章中一直反覆提到 Data/Concept drift 等關於資料變化會引起問題的概念,但除了在 [Day 04] 部署模型的挑戰 — 資料也懂超級變變變!? 做了名詞解釋以外,並沒有更深入的討論,所以今天就讓我們來詳細的談談產品應用時會遇到的資料問題吧。
另外,今天的標題其實是想取 "色色" 跟 "變態" 之間的關係,搭配生物學上 "變態" 那種改變的概念來形容資料的變化哦,然後今天的 quote 是守衛的名台詞,太牽強了,連自己都覺得不得不解釋哈哈哈
/images/emoticon/emoticon25.gif
不可以色色 MEME

資料的各種變化

在產品應用時會遇到的資料問題主要有兩種:

  • Drift — 資料隨著時間的改變,例如每天收集一次資料,過一段時間資料就會出現變化。
    • Data drift — 從訓練到服務之間的資料改變,也就是特徵的統計性質改變。
    • Concept drift — 世界改變使得 Ground Truth 改變,也就是標籤的統計性質改變。

其實這個真的蠻直白的,所以這邊再把前面的定義精簡提一下就好了。

  • Skew — 概念上的同一個資料集在不同版本或來源間的差別,例如訓練集與實際接收的資料 (Serving set)。
    skew
    *圖片修改自 MLEP — Detecting Data Issues
    • Schema skew — 訓練與實際資料的綱要 (Schema) 不相符,例如預期浮點數但實際資料卻是整數。
    • Distribution skew — 訓練與實際資料互相背離,這種 Dataset shift 可能會以 Covariate、Concept 等形式顯現:
      Distribution skew
      *圖片修改自 MLEP — Detecting Data Issues
      • Dataset shift:特徵與標籤的聯合機率在訓練與服務時不同。
        Dataset shift
      • Covariate shift:輸入變數的分佈在訓練於服務時不同,也就是說,特徵 (x) 的邊際分佈不同,但條件分佈不變 (x → y 映射不變)。
        Covariate shift
      • Concept shift:輸入與輸出變數的關係改變,但輸入變數的分佈不變。
        Concept shift

當模型訓練好之後,必須持續地監控與評估輸入的資料才能偵測到上述的各種改變。

下圖為偵測變化的工作流程:
Skew detection workflow
*圖片來源:MLEP — TensorFlow Data Validation

TensorFlow Data Validation

在實務上我們可以使用 TensorFlow Data Validation (TFDV) 作為驗證資料的工具。
它的功能如下:

  • 產生資料的描述統計數據 (descriptive statistics) 並可視化於瀏覽器中。
  • 推論資料綱要。
  • 對資料綱要進行有效性檢查 (Validity checks)。
  • 偵測 Training/Serving skew (比較兩者資料的統計數據與綱要)。
    • Schema skew — 訓練、服務集的資料綱要不同,任何可能有差別的地方都要用 "環境" 來處理 (例如服務集不會有標籤)。
    • Feature skew — 特徵的值不同,例如不小心做了不同的前處理或資料來源改變了。
    • Distribution skew — 某特徵的分佈不同 (各項統計值不同都可以算),例如訓練時只有 0~100,但上線時遇到的卻是 500~600。

而實際的作法為比較類別型特徵的 L-infinity distance、數值型特徵的近似 Jensen-Shannon divergence

其中 L-infinity distance 又稱為 Chebyshev distance,簡單來說就是各個座標軸之差的最大值,例如 2D 就代表在 x 軸的差與 y 軸的差取最大值:
Chebyshev distance
*圖片來源:Wikipedia — Chebyshev distance

使用時機

TFDV 為具擴縮性的描述性統計且搭配 Facets interface 可視化,除了用在訓練 Pipeline 中,它還有以下用途:

  • 推論時,驗證新的資料以確保不會突然收到壞掉的特徵。
  • 推論時,驗證新的資料以確保它與訓練資料屬於同一部分的決策表面 (Decision surface),也就是說模型是以相似資料訓練的。
  • 驗證轉換、特徵工程後的資料 (使用 TF.Transform) 以確保沒做錯什麼。

而關於怎麼使用 TFDV 請參考官方教學 Get started with Tensorflow Data Validation 即可。

以上就是今天的內容啦,明天見囉!
/images/emoticon/emoticon35.gif

參考資料


上一篇
[Day 21] 資料標註 (2/2) — 各種標註方法
下一篇
[Day 23] 資料旅程 — 好想出去玩 V1.0 ٩(●ᴗ●)۶
系列文
然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言